1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 import javax.crypto.spec.DESKeySpec;
31
32 public class CheckWeakKeys {
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 static private byte [][] weakKeys = {
53 { (byte)0xE0, (byte)0x01, (byte)0xE0, (byte)0x01,
54 (byte)0xF1, (byte)0x01, (byte)0xF1, (byte)0x01 },
55
56 { (byte)0x01, (byte)0xE0, (byte)0x01, (byte)0xE0,
57 (byte)0x01, (byte)0xF1, (byte)0x01, (byte)0xF1 },
58
59 { (byte)0xFE, (byte)0x1F, (byte)0xFE, (byte)0x1F,
60 (byte)0xFE, (byte)0x0E, (byte)0xFE, (byte)0x0E },
61
62 { (byte)0x1F, (byte)0xFE, (byte)0x1F, (byte)0xFE,
63 (byte)0x0E, (byte)0xFE, (byte)0x0E, (byte)0xFE },
64
65 { (byte)0xE0, (byte)0x1F, (byte)0xE0, (byte)0x1F,
66 (byte)0xF1, (byte)0x0E, (byte)0xF1, (byte)0x0E },
67
68 { (byte)0x1F, (byte)0xE0, (byte)0x1F, (byte)0xE0,
69 (byte)0x0E, (byte)0xF1, (byte)0x0E, (byte)0xF1 },
70
71 { (byte)0x01, (byte)0xFE, (byte)0x01, (byte)0xFE,
72 (byte)0x01, (byte)0xFE, (byte)0x01, (byte)0xFE },
73
74 { (byte)0xFE, (byte)0x01, (byte)0xFE, (byte)0x01,
75 (byte)0xFE, (byte)0x01, (byte)0xFE, (byte)0x01 },
76
77 { (byte)0x01, (byte)0x1F, (byte)0x01, (byte)0x1F,
78 (byte)0x01, (byte)0x0E, (byte)0x01, (byte)0x0E },
79
80 { (byte)0x1F, (byte)0x01, (byte)0x1F, (byte)0x01,
81 (byte)0x0E, (byte)0x01, (byte)0x0E, (byte)0x01 },
82
83 { (byte)0xE0, (byte)0xFE, (byte)0xE0, (byte)0xFE,
84 (byte)0xF1, (byte)0xFE, (byte)0xF1, (byte)0xFE },
85
86 { (byte)0xFE, (byte)0xE0, (byte)0xFE, (byte)0xE0,
87 (byte)0xFE, (byte)0xF1, (byte)0xFE, (byte)0xF1 },
88
89 { (byte)0x01, (byte)0x01, (byte)0x01, (byte)0x01,
90 (byte)0x01, (byte)0x01, (byte)0x01, (byte)0x01 },
91
92 { (byte)0xFE, (byte)0xFE, (byte)0xFE, (byte)0xFE,
93 (byte)0xFE, (byte)0xFE, (byte)0xFE, (byte)0xFE },
94
95 { (byte)0xE0, (byte)0xE0, (byte)0xE0, (byte)0xE0,
96 (byte)0xF1, (byte)0xF1, (byte)0xF1, (byte)0xF1 },
97
98 { (byte)0x1F, (byte)0x1F, (byte)0x1F, (byte)0x1F,
99 (byte)0x0E, (byte)0x0E, (byte)0x0E, (byte)0x0E }
100 };
101
102 public static void main(String[] args) throws Exception {
103
104 boolean failed = false;
105
106 for (int i = 0; i < weakKeys.length; i++) {
107 DESKeySpec desSpec = new DESKeySpec(weakKeys[i]);
108 if (!DESKeySpec.isWeak(weakKeys[i], 0)) {
109 failed = true;
110 System.out.println("Entry " + i + " should be weak");
111 }
112 }
113
114 if (failed) {
115 throw new Exception("Failed test!!!");
116 }
117
118 System.out.println("Passed test.");
119 }
120 }